// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.22.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Google App Engine Admin API Version v1beta
 *
 * \section ApiInfo API Version Information
 *    <table>
 *      <tr><th>API
 *          <td><a href='https://cloud.google.com/appengine/docs/admin-api/'>Google App Engine Admin API</a>
 *      <tr><th>API Version<td>v1beta
 *      <tr><th>API Rev<td>20170320 (809)
 *      <tr><th>API Docs
 *          <td><a href='https://cloud.google.com/appengine/docs/admin-api/'>
 *              https://cloud.google.com/appengine/docs/admin-api/</a>
 *      <tr><th>Discovery Name<td>appengine
 *    </table>
 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Google App Engine Admin API can be found at
 * <a href='https://cloud.google.com/appengine/docs/admin-api/'>https://cloud.google.com/appengine/docs/admin-api/</a>.
 *
 * For more information about the Google APIs Client Library for .NET, see
 * <a href='https://developers.google.com/api-client-library/dotnet/get_started'>
 * https://developers.google.com/api-client-library/dotnet/get_started</a>
 */

namespace Google.Apis.Appengine.v1beta
{
    /// <summary>The Appengine Service.</summary>
    public class AppengineService : Google.Apis.Services.BaseClientService
    {
        /// <summary>The API version.</summary>
        public const string Version = "v1beta";

        /// <summary>The discovery version used to generate this service.</summary>
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// <summary>Constructs a new service.</summary>
        public AppengineService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// <summary>Constructs a new service.</summary>
        /// <param name="initializer">The service initializer.</param>
        public AppengineService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            apps = new AppsResource(this);
        }

        /// <summary>Gets the service supported features.</summary>
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// <summary>Gets the service name.</summary>
        public override string Name
        {
            get { return "appengine"; }
        }

        /// <summary>Gets the service base URI.</summary>
        public override string BaseUri
        {
            get { return "https://appengine.googleapis.com/"; }
        }

        /// <summary>Gets the service base path.</summary>
        public override string BasePath
        {
            get { return ""; }
        }

        /// <summary>Available OAuth 2.0 scopes for use with the Google App Engine Admin API.</summary>
        public class Scope
        {
            /// <summary>View and manage your applications deployed on Google App Engine</summary>
            public static string AppengineAdmin = "https://www.googleapis.com/auth/appengine.admin";

            /// <summary>View and manage your data across Google Cloud Platform services</summary>
            public static string CloudPlatform = "https://www.googleapis.com/auth/cloud-platform";

            /// <summary>View your data across Google Cloud Platform services</summary>
            public static string CloudPlatformReadOnly = "https://www.googleapis.com/auth/cloud-platform.read-only";

        }



        private readonly AppsResource apps;

        /// <summary>Gets the Apps resource.</summary>
        public virtual AppsResource Apps
        {
            get { return apps; }
        }
    }

    ///<summary>A base abstract class for Appengine requests.</summary>
    public abstract class AppengineBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///<summary>Constructs a new AppengineBaseServiceRequest instance.</summary>
        protected AppengineBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// <summary>V1 error format.</summary>
        [Google.Apis.Util.RequestParameterAttribute("$.xgafv", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Xgafv { get; set; }

        /// <summary>OAuth access token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("access_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string AccessToken { get; set; }

        /// <summary>Data format for response.</summary>
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Alt { get; set; }

        /// <summary>OAuth bearer token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("bearer_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string BearerToken { get; set; }

        /// <summary>JSONP</summary>
        [Google.Apis.Util.RequestParameterAttribute("callback", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Callback { get; set; }

        /// <summary>Selector specifying which fields to include in a partial response.</summary>
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// <summary>API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.</summary>
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// <summary>OAuth 2.0 token for the current user.</summary>
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// <summary>Pretty-print response.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("pp", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> Pp { get; set; }

        /// <summary>Returns response with indentations and line breaks.</summary>
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// <summary>Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters.</summary>
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// <summary>Legacy upload protocol for media (e.g. "media", "multipart").</summary>
        [Google.Apis.Util.RequestParameterAttribute("uploadType", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UploadType { get; set; }

        /// <summary>Upload protocol for media (e.g. "raw", "multipart").</summary>
        [Google.Apis.Util.RequestParameterAttribute("upload_protocol", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UploadProtocol { get; set; }

        /// <summary>Initializes Appengine parameter list.</summary>
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "$.xgafv", new Google.Apis.Discovery.Parameter
                {
                    Name = "$.xgafv",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "access_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "access_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "bearer_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "bearer_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "callback", new Google.Apis.Discovery.Parameter
                {
                    Name = "callback",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "pp", new Google.Apis.Discovery.Parameter
                {
                    Name = "pp",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "uploadType", new Google.Apis.Discovery.Parameter
                {
                    Name = "uploadType",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "upload_protocol", new Google.Apis.Discovery.Parameter
                {
                    Name = "upload_protocol",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// <summary>The "apps" collection of methods.</summary>
    public class AppsResource
    {
        private const string Resource = "apps";

        /// <summary>The service which this resource belongs to.</summary>
        private readonly Google.Apis.Services.IClientService service;

        /// <summary>Constructs a new resource.</summary>
        public AppsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;
            authorizedCertificates = new AuthorizedCertificatesResource(service);
            authorizedDomains = new AuthorizedDomainsResource(service);
            domainMappings = new DomainMappingsResource(service);
            locations = new LocationsResource(service);
            operations = new OperationsResource(service);
            services = new ServicesResource(service);

        }

        private readonly AuthorizedCertificatesResource authorizedCertificates;

        /// <summary>Gets the AuthorizedCertificates resource.</summary>
        public virtual AuthorizedCertificatesResource AuthorizedCertificates
        {
            get { return authorizedCertificates; }
        }

        /// <summary>The "authorizedCertificates" collection of methods.</summary>
        public class AuthorizedCertificatesResource
        {
            private const string Resource = "authorizedCertificates";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public AuthorizedCertificatesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Uploads the specified SSL certificate.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="appsId">Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</param>
            public virtual CreateRequest Create(Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate body, string appsId)
            {
                return new CreateRequest(service, body, appsId);
            }

            /// <summary>Uploads the specified SSL certificate.</summary>
            public class CreateRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate>
            {
                /// <summary>Constructs a new Create request.</summary>
                public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate body, string appsId)
                    : base(service)
                {
                    AppsId = appsId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "create"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/authorizedCertificates"; }
                }

                /// <summary>Initializes Create parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Deletes the specified SSL certificate.</summary>
            /// <param name="appsId">Part of `name`. Name of the resource to delete. Example:
            /// apps/myapp/authorizedCertificates/12345.</param>
            /// <param name="authorizedCertificatesId">Part of `name`. See
            /// documentation of `appsId`.</param>
            public virtual DeleteRequest Delete(string appsId, string authorizedCertificatesId)
            {
                return new DeleteRequest(service, appsId, authorizedCertificatesId);
            }

            /// <summary>Deletes the specified SSL certificate.</summary>
            public class DeleteRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Empty>
            {
                /// <summary>Constructs a new Delete request.</summary>
                public DeleteRequest(Google.Apis.Services.IClientService service, string appsId, string authorizedCertificatesId)
                    : base(service)
                {
                    AppsId = appsId;
                    AuthorizedCertificatesId = authorizedCertificatesId;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource to delete. Example:
                /// apps/myapp/authorizedCertificates/12345.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("authorizedCertificatesId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AuthorizedCertificatesId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "delete"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}"; }
                }

                /// <summary>Initializes Delete parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "authorizedCertificatesId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "authorizedCertificatesId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Gets the specified SSL certificate.</summary>
            /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
            /// apps/myapp/authorizedCertificates/12345.</param>
            /// <param name="authorizedCertificatesId">Part of `name`. See
            /// documentation of `appsId`.</param>
            public virtual GetRequest Get(string appsId, string authorizedCertificatesId)
            {
                return new GetRequest(service, appsId, authorizedCertificatesId);
            }

            /// <summary>Gets the specified SSL certificate.</summary>
            public class GetRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string appsId, string authorizedCertificatesId)
                    : base(service)
                {
                    AppsId = appsId;
                    AuthorizedCertificatesId = authorizedCertificatesId;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource requested. Example:
                /// apps/myapp/authorizedCertificates/12345.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("authorizedCertificatesId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AuthorizedCertificatesId { get; private set; }

                /// <summary>Controls the set of fields returned in the GET response.</summary>
                [Google.Apis.Util.RequestParameterAttribute("view", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<ViewEnum> View { get; set; }

                /// <summary>Controls the set of fields returned in the GET response.</summary>
                public enum ViewEnum
                {
                    [Google.Apis.Util.StringValueAttribute("BASIC_CERTIFICATE")]
                    BASICCERTIFICATE,
                    [Google.Apis.Util.StringValueAttribute("FULL_CERTIFICATE")]
                    FULLCERTIFICATE,
                }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "authorizedCertificatesId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "authorizedCertificatesId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "view", new Google.Apis.Discovery.Parameter
                        {
                            Name = "view",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists all SSL certificates the user is authorized to administer.</summary>
            /// <param name="appsId">Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</param>
            public virtual ListRequest List(string appsId)
            {
                return new ListRequest(service, appsId);
            }

            /// <summary>Lists all SSL certificates the user is authorized to administer.</summary>
            public class ListRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.ListAuthorizedCertificatesResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string appsId)
                    : base(service)
                {
                    AppsId = appsId;
                    InitParameters();
                }


                /// <summary>Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Maximum results to return per page.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// <summary>Continuation token for fetching the next page of results.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/authorizedCertificates"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates the specified SSL certificate. To renew a certificate and maintain its existing domain
            /// mappings, update certificate_data with a new certificate. The new certificate must be applicable to the
            /// same domains as the original certificate. The certificate display_name may also be updated.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="appsId">Part of `name`. Name of the resource to update. Example:
            /// apps/myapp/authorizedCertificates/12345.</param>
            /// <param name="authorizedCertificatesId">Part of `name`. See
            /// documentation of `appsId`.</param>
            public virtual PatchRequest Patch(Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate body, string appsId, string authorizedCertificatesId)
            {
                return new PatchRequest(service, body, appsId, authorizedCertificatesId);
            }

            /// <summary>Updates the specified SSL certificate. To renew a certificate and maintain its existing domain
            /// mappings, update certificate_data with a new certificate. The new certificate must be applicable to the
            /// same domains as the original certificate. The certificate display_name may also be updated.</summary>
            public class PatchRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate body, string appsId, string authorizedCertificatesId)
                    : base(service)
                {
                    AppsId = appsId;
                    AuthorizedCertificatesId = authorizedCertificatesId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource to update. Example:
                /// apps/myapp/authorizedCertificates/12345.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("authorizedCertificatesId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AuthorizedCertificatesId { get; private set; }

                /// <summary>Standard field mask for the set of fields to be updated. Updates are only supported on the
                /// certificate_raw_data and display_name fields.</summary>
                [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string UpdateMask { get; set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.Appengine.v1beta.Data.AuthorizedCertificate Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "authorizedCertificatesId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "authorizedCertificatesId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "updateMask", new Google.Apis.Discovery.Parameter
                        {
                            Name = "updateMask",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly AuthorizedDomainsResource authorizedDomains;

        /// <summary>Gets the AuthorizedDomains resource.</summary>
        public virtual AuthorizedDomainsResource AuthorizedDomains
        {
            get { return authorizedDomains; }
        }

        /// <summary>The "authorizedDomains" collection of methods.</summary>
        public class AuthorizedDomainsResource
        {
            private const string Resource = "authorizedDomains";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public AuthorizedDomainsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Lists all domains the user is authorized to administer.</summary>
            /// <param name="appsId">Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</param>
            public virtual ListRequest List(string appsId)
            {
                return new ListRequest(service, appsId);
            }

            /// <summary>Lists all domains the user is authorized to administer.</summary>
            public class ListRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.ListAuthorizedDomainsResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string appsId)
                    : base(service)
                {
                    AppsId = appsId;
                    InitParameters();
                }


                /// <summary>Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Maximum results to return per page.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// <summary>Continuation token for fetching the next page of results.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/authorizedDomains"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly DomainMappingsResource domainMappings;

        /// <summary>Gets the DomainMappings resource.</summary>
        public virtual DomainMappingsResource DomainMappings
        {
            get { return domainMappings; }
        }

        /// <summary>The "domainMappings" collection of methods.</summary>
        public class DomainMappingsResource
        {
            private const string Resource = "domainMappings";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public DomainMappingsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Maps a domain to an application. A user must be authorized to administer a domain in order to
            /// map it to an application. For a list of available authorized domains, see
            /// AuthorizedDomains.ListAuthorizedDomains.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="appsId">Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</param>
            public virtual CreateRequest Create(Google.Apis.Appengine.v1beta.Data.DomainMapping body, string appsId)
            {
                return new CreateRequest(service, body, appsId);
            }

            /// <summary>Maps a domain to an application. A user must be authorized to administer a domain in order to
            /// map it to an application. For a list of available authorized domains, see
            /// AuthorizedDomains.ListAuthorizedDomains.</summary>
            public class CreateRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
            {
                /// <summary>Constructs a new Create request.</summary>
                public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.DomainMapping body, string appsId)
                    : base(service)
                {
                    AppsId = appsId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.Appengine.v1beta.Data.DomainMapping Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "create"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "POST"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/domainMappings"; }
                }

                /// <summary>Initializes Create parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Deletes the specified domain mapping. A user must be authorized to administer the associated
            /// domain in order to delete a DomainMapping resource.</summary>
            /// <param name="appsId">Part of `name`. Name of the resource to delete. Example:
            /// apps/myapp/domainMappings/example.com.</param>
            /// <param name="domainMappingsId">Part of `name`. See
            /// documentation of `appsId`.</param>
            public virtual DeleteRequest Delete(string appsId, string domainMappingsId)
            {
                return new DeleteRequest(service, appsId, domainMappingsId);
            }

            /// <summary>Deletes the specified domain mapping. A user must be authorized to administer the associated
            /// domain in order to delete a DomainMapping resource.</summary>
            public class DeleteRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
            {
                /// <summary>Constructs a new Delete request.</summary>
                public DeleteRequest(Google.Apis.Services.IClientService service, string appsId, string domainMappingsId)
                    : base(service)
                {
                    AppsId = appsId;
                    DomainMappingsId = domainMappingsId;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource to delete. Example:
                /// apps/myapp/domainMappings/example.com.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("domainMappingsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string DomainMappingsId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "delete"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}"; }
                }

                /// <summary>Initializes Delete parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "domainMappingsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "domainMappingsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Gets the specified domain mapping.</summary>
            /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
            /// apps/myapp/domainMappings/example.com.</param>
            /// <param name="domainMappingsId">Part of `name`. See
            /// documentation of `appsId`.</param>
            public virtual GetRequest Get(string appsId, string domainMappingsId)
            {
                return new GetRequest(service, appsId, domainMappingsId);
            }

            /// <summary>Gets the specified domain mapping.</summary>
            public class GetRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.DomainMapping>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string appsId, string domainMappingsId)
                    : base(service)
                {
                    AppsId = appsId;
                    DomainMappingsId = domainMappingsId;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource requested. Example:
                /// apps/myapp/domainMappings/example.com.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("domainMappingsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string DomainMappingsId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "domainMappingsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "domainMappingsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists the domain mappings on an application.</summary>
            /// <param name="appsId">Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</param>
            public virtual ListRequest List(string appsId)
            {
                return new ListRequest(service, appsId);
            }

            /// <summary>Lists the domain mappings on an application.</summary>
            public class ListRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.ListDomainMappingsResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string appsId)
                    : base(service)
                {
                    AppsId = appsId;
                    InitParameters();
                }


                /// <summary>Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Maximum results to return per page.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// <summary>Continuation token for fetching the next page of results.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/domainMappings"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update
            /// certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer
            /// the associated domain in order to update a DomainMapping resource.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="appsId">Part of `name`. Name of the resource to update. Example:
            /// apps/myapp/domainMappings/example.com.</param>
            /// <param name="domainMappingsId">Part of `name`. See
            /// documentation of `appsId`.</param>
            public virtual PatchRequest Patch(Google.Apis.Appengine.v1beta.Data.DomainMapping body, string appsId, string domainMappingsId)
            {
                return new PatchRequest(service, body, appsId, domainMappingsId);
            }

            /// <summary>Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update
            /// certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer
            /// the associated domain in order to update a DomainMapping resource.</summary>
            public class PatchRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.DomainMapping body, string appsId, string domainMappingsId)
                    : base(service)
                {
                    AppsId = appsId;
                    DomainMappingsId = domainMappingsId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource to update. Example:
                /// apps/myapp/domainMappings/example.com.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("domainMappingsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string DomainMappingsId { get; private set; }

                /// <summary>Standard field mask for the set of fields to be updated.</summary>
                [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string UpdateMask { get; set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.Appengine.v1beta.Data.DomainMapping Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "domainMappingsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "domainMappingsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "updateMask", new Google.Apis.Discovery.Parameter
                        {
                            Name = "updateMask",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly LocationsResource locations;

        /// <summary>Gets the Locations resource.</summary>
        public virtual LocationsResource Locations
        {
            get { return locations; }
        }

        /// <summary>The "locations" collection of methods.</summary>
        public class LocationsResource
        {
            private const string Resource = "locations";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public LocationsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Get information about a location.</summary>
            /// <param name="appsId">Part of `name`. Resource name for the location.</param>
            /// <param name="locationsId">Part
            /// of `name`. See documentation of `appsId`.</param>
            public virtual GetRequest Get(string appsId, string locationsId)
            {
                return new GetRequest(service, appsId, locationsId);
            }

            /// <summary>Get information about a location.</summary>
            public class GetRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Location>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string appsId, string locationsId)
                    : base(service)
                {
                    AppsId = appsId;
                    LocationsId = locationsId;
                    InitParameters();
                }


                /// <summary>Part of `name`. Resource name for the location.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("locationsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string LocationsId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/locations/{locationsId}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "locationsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "locationsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists information about the supported locations for this service.</summary>
            /// <param name="appsId">Part of `name`. The resource that owns the locations collection, if applicable.</param>
            public virtual ListRequest List(string appsId)
            {
                return new ListRequest(service, appsId);
            }

            /// <summary>Lists information about the supported locations for this service.</summary>
            public class ListRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.ListLocationsResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string appsId)
                    : base(service)
                {
                    AppsId = appsId;
                    InitParameters();
                }


                /// <summary>Part of `name`. The resource that owns the locations collection, if applicable.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>The standard list filter.</summary>
                [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Filter { get; set; }

                /// <summary>The standard list page size.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// <summary>The standard list page token.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/locations"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "filter", new Google.Apis.Discovery.Parameter
                        {
                            Name = "filter",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly OperationsResource operations;

        /// <summary>Gets the Operations resource.</summary>
        public virtual OperationsResource Operations
        {
            get { return operations; }
        }

        /// <summary>The "operations" collection of methods.</summary>
        public class OperationsResource
        {
            private const string Resource = "operations";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public OperationsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;

            }


            /// <summary>Gets the latest state of a long-running operation. Clients can use this method to poll the
            /// operation result at intervals as recommended by the API service.</summary>
            /// <param name="appsId">Part of `name`. The name of the operation resource.</param>
            /// <param
            /// name="operationsId">Part of `name`. See documentation of `appsId`.</param>
            public virtual GetRequest Get(string appsId, string operationsId)
            {
                return new GetRequest(service, appsId, operationsId);
            }

            /// <summary>Gets the latest state of a long-running operation. Clients can use this method to poll the
            /// operation result at intervals as recommended by the API service.</summary>
            public class GetRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string appsId, string operationsId)
                    : base(service)
                {
                    AppsId = appsId;
                    OperationsId = operationsId;
                    InitParameters();
                }


                /// <summary>Part of `name`. The name of the operation resource.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("operationsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string OperationsId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/operations/{operationsId}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "operationsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "operationsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists operations that match the specified filter in the request. If the server doesn't support
            /// this method, it returns UNIMPLEMENTED.NOTE: the name binding below allows API services to override the
            /// binding to use different resource name schemes, such as users/operations.</summary>
            /// <param name="appsId">Part of `name`. The name of the operation collection.</param>
            public virtual ListRequest List(string appsId)
            {
                return new ListRequest(service, appsId);
            }

            /// <summary>Lists operations that match the specified filter in the request. If the server doesn't support
            /// this method, it returns UNIMPLEMENTED.NOTE: the name binding below allows API services to override the
            /// binding to use different resource name schemes, such as users/operations.</summary>
            public class ListRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.ListOperationsResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string appsId)
                    : base(service)
                {
                    AppsId = appsId;
                    InitParameters();
                }


                /// <summary>Part of `name`. The name of the operation collection.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>The standard list filter.</summary>
                [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Filter { get; set; }

                /// <summary>The standard list page size.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// <summary>The standard list page token.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/operations"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "filter", new Google.Apis.Discovery.Parameter
                        {
                            Name = "filter",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
        private readonly ServicesResource services;

        /// <summary>Gets the Services resource.</summary>
        public virtual ServicesResource Services
        {
            get { return services; }
        }

        /// <summary>The "services" collection of methods.</summary>
        public class ServicesResource
        {
            private const string Resource = "services";

            /// <summary>The service which this resource belongs to.</summary>
            private readonly Google.Apis.Services.IClientService service;

            /// <summary>Constructs a new resource.</summary>
            public ServicesResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;
                versions = new VersionsResource(service);

            }

            private readonly VersionsResource versions;

            /// <summary>Gets the Versions resource.</summary>
            public virtual VersionsResource Versions
            {
                get { return versions; }
            }

            /// <summary>The "versions" collection of methods.</summary>
            public class VersionsResource
            {
                private const string Resource = "versions";

                /// <summary>The service which this resource belongs to.</summary>
                private readonly Google.Apis.Services.IClientService service;

                /// <summary>Constructs a new resource.</summary>
                public VersionsResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;
                    instances = new InstancesResource(service);

                }

                private readonly InstancesResource instances;

                /// <summary>Gets the Instances resource.</summary>
                public virtual InstancesResource Instances
                {
                    get { return instances; }
                }

                /// <summary>The "instances" collection of methods.</summary>
                public class InstancesResource
                {
                    private const string Resource = "instances";

                    /// <summary>The service which this resource belongs to.</summary>
                    private readonly Google.Apis.Services.IClientService service;

                    /// <summary>Constructs a new resource.</summary>
                    public InstancesResource(Google.Apis.Services.IClientService service)
                    {
                        this.service = service;

                    }


                    /// <summary>Enables debugging on a VM instance. This allows you to use the SSH command to connect
                    /// to the virtual machine where the instance lives. While in "debug mode", the instance continues
                    /// to serve live traffic. You should delete the instance when you are done debugging and then allow
                    /// the system to take over and determine if another instance should be started.Only applicable for
                    /// instances in App Engine flexible environment.</summary>
                    /// <param name="body">The body of the request.</param>
                    /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
                    /// apps/myapp/services/default/versions/v1/instances/instance-1.</param>
                    /// <param name="servicesId">Part of
                    /// `name`. See documentation of `appsId`.</param>
                    /// <param name="versionsId">Part of `name`. See documentation of
                    /// `appsId`.</param>
                    /// <param name="instancesId">Part of `name`. See documentation of `appsId`.</param>
                    public virtual DebugRequest Debug(Google.Apis.Appengine.v1beta.Data.DebugInstanceRequest body, string appsId, string servicesId, string versionsId, string instancesId)
                    {
                        return new DebugRequest(service, body, appsId, servicesId, versionsId, instancesId);
                    }

                    /// <summary>Enables debugging on a VM instance. This allows you to use the SSH command to connect
                    /// to the virtual machine where the instance lives. While in "debug mode", the instance continues
                    /// to serve live traffic. You should delete the instance when you are done debugging and then allow
                    /// the system to take over and determine if another instance should be started.Only applicable for
                    /// instances in App Engine flexible environment.</summary>
                    public class DebugRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
                    {
                        /// <summary>Constructs a new Debug request.</summary>
                        public DebugRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.DebugInstanceRequest body, string appsId, string servicesId, string versionsId, string instancesId)
                            : base(service)
                        {
                            AppsId = appsId;
                            ServicesId = servicesId;
                            VersionsId = versionsId;
                            InstancesId = instancesId;
                            Body = body;
                            InitParameters();
                        }


                        /// <summary>Part of `name`. Name of the resource requested. Example:
                        /// apps/myapp/services/default/versions/v1/instances/instance-1.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string AppsId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ServicesId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("versionsId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string VersionsId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("instancesId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string InstancesId { get; private set; }


                        /// <summary>Gets or sets the body of this request.</summary>
                        Google.Apis.Appengine.v1beta.Data.DebugInstanceRequest Body { get; set; }

                        ///<summary>Returns the body of the request.</summary>
                        protected override object GetBody() { return Body; }

                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "debug"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "POST"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug"; }
                        }

                        /// <summary>Initializes Debug parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "appsId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "appsId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "servicesId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "servicesId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "versionsId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "versionsId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "instancesId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "instancesId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }

                    /// <summary>Stops a running instance.</summary>
                    /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
                    /// apps/myapp/services/default/versions/v1/instances/instance-1.</param>
                    /// <param name="servicesId">Part of
                    /// `name`. See documentation of `appsId`.</param>
                    /// <param name="versionsId">Part of `name`. See documentation of
                    /// `appsId`.</param>
                    /// <param name="instancesId">Part of `name`. See documentation of `appsId`.</param>
                    public virtual DeleteRequest Delete(string appsId, string servicesId, string versionsId, string instancesId)
                    {
                        return new DeleteRequest(service, appsId, servicesId, versionsId, instancesId);
                    }

                    /// <summary>Stops a running instance.</summary>
                    public class DeleteRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
                    {
                        /// <summary>Constructs a new Delete request.</summary>
                        public DeleteRequest(Google.Apis.Services.IClientService service, string appsId, string servicesId, string versionsId, string instancesId)
                            : base(service)
                        {
                            AppsId = appsId;
                            ServicesId = servicesId;
                            VersionsId = versionsId;
                            InstancesId = instancesId;
                            InitParameters();
                        }


                        /// <summary>Part of `name`. Name of the resource requested. Example:
                        /// apps/myapp/services/default/versions/v1/instances/instance-1.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string AppsId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ServicesId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("versionsId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string VersionsId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("instancesId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string InstancesId { get; private set; }


                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "delete"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "DELETE"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}"; }
                        }

                        /// <summary>Initializes Delete parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "appsId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "appsId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "servicesId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "servicesId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "versionsId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "versionsId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "instancesId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "instancesId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }

                    /// <summary>Gets instance information.</summary>
                    /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
                    /// apps/myapp/services/default/versions/v1/instances/instance-1.</param>
                    /// <param name="servicesId">Part of
                    /// `name`. See documentation of `appsId`.</param>
                    /// <param name="versionsId">Part of `name`. See documentation of
                    /// `appsId`.</param>
                    /// <param name="instancesId">Part of `name`. See documentation of `appsId`.</param>
                    public virtual GetRequest Get(string appsId, string servicesId, string versionsId, string instancesId)
                    {
                        return new GetRequest(service, appsId, servicesId, versionsId, instancesId);
                    }

                    /// <summary>Gets instance information.</summary>
                    public class GetRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Instance>
                    {
                        /// <summary>Constructs a new Get request.</summary>
                        public GetRequest(Google.Apis.Services.IClientService service, string appsId, string servicesId, string versionsId, string instancesId)
                            : base(service)
                        {
                            AppsId = appsId;
                            ServicesId = servicesId;
                            VersionsId = versionsId;
                            InstancesId = instancesId;
                            InitParameters();
                        }


                        /// <summary>Part of `name`. Name of the resource requested. Example:
                        /// apps/myapp/services/default/versions/v1/instances/instance-1.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string AppsId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ServicesId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("versionsId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string VersionsId { get; private set; }

                        /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("instancesId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string InstancesId { get; private set; }


                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "get"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "GET"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}"; }
                        }

                        /// <summary>Initializes Get parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "appsId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "appsId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "servicesId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "servicesId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "versionsId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "versionsId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "instancesId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "instancesId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }

                    /// <summary>Lists the instances of a version.Tip: To aggregate details about instances over time,
                    /// see the Stackdriver Monitoring API
                    /// (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).</summary>
                    /// <param name="appsId">Part of `parent`. Name of the parent Version resource. Example:
                    /// apps/myapp/services/default/versions/v1.</param>
                    /// <param name="servicesId">Part of `parent`. See
                    /// documentation of `appsId`.</param>
                    /// <param name="versionsId">Part of `parent`. See documentation of
                    /// `appsId`.</param>
                    public virtual ListRequest List(string appsId, string servicesId, string versionsId)
                    {
                        return new ListRequest(service, appsId, servicesId, versionsId);
                    }

                    /// <summary>Lists the instances of a version.Tip: To aggregate details about instances over time,
                    /// see the Stackdriver Monitoring API
                    /// (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).</summary>
                    public class ListRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.ListInstancesResponse>
                    {
                        /// <summary>Constructs a new List request.</summary>
                        public ListRequest(Google.Apis.Services.IClientService service, string appsId, string servicesId, string versionsId)
                            : base(service)
                        {
                            AppsId = appsId;
                            ServicesId = servicesId;
                            VersionsId = versionsId;
                            InitParameters();
                        }


                        /// <summary>Part of `parent`. Name of the parent Version resource. Example:
                        /// apps/myapp/services/default/versions/v1.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string AppsId { get; private set; }

                        /// <summary>Part of `parent`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string ServicesId { get; private set; }

                        /// <summary>Part of `parent`. See documentation of `appsId`.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("versionsId", Google.Apis.Util.RequestParameterType.Path)]
                        public virtual string VersionsId { get; private set; }

                        /// <summary>Maximum results to return per page.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                        public virtual System.Nullable<int> PageSize { get; set; }

                        /// <summary>Continuation token for fetching the next page of results.</summary>
                        [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                        public virtual string PageToken { get; set; }


                        ///<summary>Gets the method name.</summary>
                        public override string MethodName
                        {
                            get { return "list"; }
                        }

                        ///<summary>Gets the HTTP method.</summary>
                        public override string HttpMethod
                        {
                            get { return "GET"; }
                        }

                        ///<summary>Gets the REST path.</summary>
                        public override string RestPath
                        {
                            get { return "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances"; }
                        }

                        /// <summary>Initializes List parameter list.</summary>
                        protected override void InitParameters()
                        {
                            base.InitParameters();

                            RequestParameters.Add(
                                "appsId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "appsId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "servicesId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "servicesId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "versionsId", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "versionsId",
                                    IsRequired = true,
                                    ParameterType = "path",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "pageSize", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "pageSize",
                                    IsRequired = false,
                                    ParameterType = "query",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                            RequestParameters.Add(
                                "pageToken", new Google.Apis.Discovery.Parameter
                                {
                                    Name = "pageToken",
                                    IsRequired = false,
                                    ParameterType = "query",
                                    DefaultValue = null,
                                    Pattern = null,
                                });
                        }

                    }
                }

                /// <summary>Deploys code and resource files to a new version.</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="appsId">Part of `parent`. Name of the parent resource to create this version under. Example:
                /// apps/myapp/services/default.</param>
                /// <param name="servicesId">Part of `parent`. See documentation of
                /// `appsId`.</param>
                public virtual CreateRequest Create(Google.Apis.Appengine.v1beta.Data.Version body, string appsId, string servicesId)
                {
                    return new CreateRequest(service, body, appsId, servicesId);
                }

                /// <summary>Deploys code and resource files to a new version.</summary>
                public class CreateRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
                {
                    /// <summary>Constructs a new Create request.</summary>
                    public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.Version body, string appsId, string servicesId)
                        : base(service)
                    {
                        AppsId = appsId;
                        ServicesId = servicesId;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>Part of `parent`. Name of the parent resource to create this version under. Example:
                    /// apps/myapp/services/default.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string AppsId { get; private set; }

                    /// <summary>Part of `parent`. See documentation of `appsId`.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ServicesId { get; private set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.Appengine.v1beta.Data.Version Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "create"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1beta/apps/{appsId}/services/{servicesId}/versions"; }
                    }

                    /// <summary>Initializes Create parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "appsId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "appsId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "servicesId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "servicesId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Deletes an existing Version resource.</summary>
                /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
                /// apps/myapp/services/default/versions/v1.</param>
                /// <param name="servicesId">Part of `name`. See documentation
                /// of `appsId`.</param>
                /// <param name="versionsId">Part of `name`. See documentation of `appsId`.</param>
                public virtual DeleteRequest Delete(string appsId, string servicesId, string versionsId)
                {
                    return new DeleteRequest(service, appsId, servicesId, versionsId);
                }

                /// <summary>Deletes an existing Version resource.</summary>
                public class DeleteRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
                {
                    /// <summary>Constructs a new Delete request.</summary>
                    public DeleteRequest(Google.Apis.Services.IClientService service, string appsId, string servicesId, string versionsId)
                        : base(service)
                    {
                        AppsId = appsId;
                        ServicesId = servicesId;
                        VersionsId = versionsId;
                        InitParameters();
                    }


                    /// <summary>Part of `name`. Name of the resource requested. Example:
                    /// apps/myapp/services/default/versions/v1.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string AppsId { get; private set; }

                    /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ServicesId { get; private set; }

                    /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("versionsId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string VersionsId { get; private set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "delete"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "DELETE"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}"; }
                    }

                    /// <summary>Initializes Delete parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "appsId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "appsId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "servicesId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "servicesId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "versionsId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "versionsId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Gets the specified Version resource. By default, only a BASIC_VIEW will be returned.
                /// Specify the FULL_VIEW parameter to get the full resource.</summary>
                /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
                /// apps/myapp/services/default/versions/v1.</param>
                /// <param name="servicesId">Part of `name`. See documentation
                /// of `appsId`.</param>
                /// <param name="versionsId">Part of `name`. See documentation of `appsId`.</param>
                public virtual GetRequest Get(string appsId, string servicesId, string versionsId)
                {
                    return new GetRequest(service, appsId, servicesId, versionsId);
                }

                /// <summary>Gets the specified Version resource. By default, only a BASIC_VIEW will be returned.
                /// Specify the FULL_VIEW parameter to get the full resource.</summary>
                public class GetRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Version>
                {
                    /// <summary>Constructs a new Get request.</summary>
                    public GetRequest(Google.Apis.Services.IClientService service, string appsId, string servicesId, string versionsId)
                        : base(service)
                    {
                        AppsId = appsId;
                        ServicesId = servicesId;
                        VersionsId = versionsId;
                        InitParameters();
                    }


                    /// <summary>Part of `name`. Name of the resource requested. Example:
                    /// apps/myapp/services/default/versions/v1.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string AppsId { get; private set; }

                    /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ServicesId { get; private set; }

                    /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("versionsId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string VersionsId { get; private set; }

                    /// <summary>Controls the set of fields returned in the Get response.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("view", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<ViewEnum> View { get; set; }

                    /// <summary>Controls the set of fields returned in the Get response.</summary>
                    public enum ViewEnum
                    {
                        [Google.Apis.Util.StringValueAttribute("BASIC")]
                        BASIC,
                        [Google.Apis.Util.StringValueAttribute("FULL")]
                        FULL,
                    }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "get"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}"; }
                    }

                    /// <summary>Initializes Get parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "appsId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "appsId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "servicesId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "servicesId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "versionsId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "versionsId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "view", new Google.Apis.Discovery.Parameter
                            {
                                Name = "view",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Lists the versions of a service.</summary>
                /// <param name="appsId">Part of `parent`. Name of the parent Service resource. Example:
                /// apps/myapp/services/default.</param>
                /// <param name="servicesId">Part of `parent`. See documentation of
                /// `appsId`.</param>
                public virtual ListRequest List(string appsId, string servicesId)
                {
                    return new ListRequest(service, appsId, servicesId);
                }

                /// <summary>Lists the versions of a service.</summary>
                public class ListRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.ListVersionsResponse>
                {
                    /// <summary>Constructs a new List request.</summary>
                    public ListRequest(Google.Apis.Services.IClientService service, string appsId, string servicesId)
                        : base(service)
                    {
                        AppsId = appsId;
                        ServicesId = servicesId;
                        InitParameters();
                    }


                    /// <summary>Part of `parent`. Name of the parent Service resource. Example:
                    /// apps/myapp/services/default.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string AppsId { get; private set; }

                    /// <summary>Part of `parent`. See documentation of `appsId`.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ServicesId { get; private set; }

                    /// <summary>Controls the set of fields returned in the List response.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("view", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<ViewEnum> View { get; set; }

                    /// <summary>Controls the set of fields returned in the List response.</summary>
                    public enum ViewEnum
                    {
                        [Google.Apis.Util.StringValueAttribute("BASIC")]
                        BASIC,
                        [Google.Apis.Util.StringValueAttribute("FULL")]
                        FULL,
                    }

                    /// <summary>Maximum results to return per page.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<int> PageSize { get; set; }

                    /// <summary>Continuation token for fetching the next page of results.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string PageToken { get; set; }


                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "list"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1beta/apps/{appsId}/services/{servicesId}/versions"; }
                    }

                    /// <summary>Initializes List parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "appsId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "appsId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "servicesId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "servicesId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "view", new Google.Apis.Discovery.Parameter
                            {
                                Name = "view",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageSize", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageSize",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageToken", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageToken",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// <summary>Updates the specified Version resource. You can specify the following fields depending on
                /// the App Engine environment and type of scaling that the version resource uses: serving_status
                /// (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status): For Version
                /// resources that use basic scaling, manual scaling, or run in the App Engine flexible environment.
                /// instance_class (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.instance_class): For Version
                /// resources that run in the App Engine standard environment. automatic_scaling.min_idle_instances
                /// (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version
                /// resources that use automatic scaling and run in the App Engine standard environment.
                /// automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version
                /// resources that use automatic scaling and run in the App Engine standard environment.</summary>
                /// <param name="body">The body of the request.</param>
                /// <param name="appsId">Part of `name`. Name of the resource to update. Example:
                /// apps/myapp/services/default/versions/1.</param>
                /// <param name="servicesId">Part of `name`. See documentation
                /// of `appsId`.</param>
                /// <param name="versionsId">Part of `name`. See documentation of `appsId`.</param>
                public virtual PatchRequest Patch(Google.Apis.Appengine.v1beta.Data.Version body, string appsId, string servicesId, string versionsId)
                {
                    return new PatchRequest(service, body, appsId, servicesId, versionsId);
                }

                /// <summary>Updates the specified Version resource. You can specify the following fields depending on
                /// the App Engine environment and type of scaling that the version resource uses: serving_status
                /// (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status): For Version
                /// resources that use basic scaling, manual scaling, or run in the App Engine flexible environment.
                /// instance_class (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.instance_class): For Version
                /// resources that run in the App Engine standard environment. automatic_scaling.min_idle_instances
                /// (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version
                /// resources that use automatic scaling and run in the App Engine standard environment.
                /// automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version
                /// resources that use automatic scaling and run in the App Engine standard environment.</summary>
                public class PatchRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
                {
                    /// <summary>Constructs a new Patch request.</summary>
                    public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.Version body, string appsId, string servicesId, string versionsId)
                        : base(service)
                    {
                        AppsId = appsId;
                        ServicesId = servicesId;
                        VersionsId = versionsId;
                        Body = body;
                        InitParameters();
                    }


                    /// <summary>Part of `name`. Name of the resource to update. Example:
                    /// apps/myapp/services/default/versions/1.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string AppsId { get; private set; }

                    /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string ServicesId { get; private set; }

                    /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("versionsId", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string VersionsId { get; private set; }

                    /// <summary>Standard field mask for the set of fields to be updated.</summary>
                    [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string UpdateMask { get; set; }


                    /// <summary>Gets or sets the body of this request.</summary>
                    Google.Apis.Appengine.v1beta.Data.Version Body { get; set; }

                    ///<summary>Returns the body of the request.</summary>
                    protected override object GetBody() { return Body; }

                    ///<summary>Gets the method name.</summary>
                    public override string MethodName
                    {
                        get { return "patch"; }
                    }

                    ///<summary>Gets the HTTP method.</summary>
                    public override string HttpMethod
                    {
                        get { return "PATCH"; }
                    }

                    ///<summary>Gets the REST path.</summary>
                    public override string RestPath
                    {
                        get { return "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}"; }
                    }

                    /// <summary>Initializes Patch parameter list.</summary>
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "appsId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "appsId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "servicesId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "servicesId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "versionsId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "versionsId",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "updateMask", new Google.Apis.Discovery.Parameter
                            {
                                Name = "updateMask",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }
            }

            /// <summary>Deletes the specified service and all enclosed versions.</summary>
            /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
            /// apps/myapp/services/default.</param>
            /// <param name="servicesId">Part of `name`. See documentation of
            /// `appsId`.</param>
            public virtual DeleteRequest Delete(string appsId, string servicesId)
            {
                return new DeleteRequest(service, appsId, servicesId);
            }

            /// <summary>Deletes the specified service and all enclosed versions.</summary>
            public class DeleteRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
            {
                /// <summary>Constructs a new Delete request.</summary>
                public DeleteRequest(Google.Apis.Services.IClientService service, string appsId, string servicesId)
                    : base(service)
                {
                    AppsId = appsId;
                    ServicesId = servicesId;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource requested. Example:
                /// apps/myapp/services/default.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string ServicesId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "delete"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "DELETE"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/services/{servicesId}"; }
                }

                /// <summary>Initializes Delete parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "servicesId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "servicesId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Gets the current configuration of the specified service.</summary>
            /// <param name="appsId">Part of `name`. Name of the resource requested. Example:
            /// apps/myapp/services/default.</param>
            /// <param name="servicesId">Part of `name`. See documentation of
            /// `appsId`.</param>
            public virtual GetRequest Get(string appsId, string servicesId)
            {
                return new GetRequest(service, appsId, servicesId);
            }

            /// <summary>Gets the current configuration of the specified service.</summary>
            public class GetRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Service>
            {
                /// <summary>Constructs a new Get request.</summary>
                public GetRequest(Google.Apis.Services.IClientService service, string appsId, string servicesId)
                    : base(service)
                {
                    AppsId = appsId;
                    ServicesId = servicesId;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource requested. Example:
                /// apps/myapp/services/default.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string ServicesId { get; private set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/services/{servicesId}"; }
                }

                /// <summary>Initializes Get parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "servicesId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "servicesId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Lists all the services in the application.</summary>
            /// <param name="appsId">Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</param>
            public virtual ListRequest List(string appsId)
            {
                return new ListRequest(service, appsId);
            }

            /// <summary>Lists all the services in the application.</summary>
            public class ListRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.ListServicesResponse>
            {
                /// <summary>Constructs a new List request.</summary>
                public ListRequest(Google.Apis.Services.IClientService service, string appsId)
                    : base(service)
                {
                    AppsId = appsId;
                    InitParameters();
                }


                /// <summary>Part of `parent`. Name of the parent Application resource. Example: apps/myapp.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Maximum results to return per page.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                /// <summary>Continuation token for fetching the next page of results.</summary>
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }


                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/services"; }
                }

                /// <summary>Initializes List parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }

            /// <summary>Updates the configuration of the specified service.</summary>
            /// <param name="body">The body of the request.</param>
            /// <param name="appsId">Part of `name`. Name of the resource to update. Example:
            /// apps/myapp/services/default.</param>
            /// <param name="servicesId">Part of `name`. See documentation of
            /// `appsId`.</param>
            public virtual PatchRequest Patch(Google.Apis.Appengine.v1beta.Data.Service body, string appsId, string servicesId)
            {
                return new PatchRequest(service, body, appsId, servicesId);
            }

            /// <summary>Updates the configuration of the specified service.</summary>
            public class PatchRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
            {
                /// <summary>Constructs a new Patch request.</summary>
                public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.Service body, string appsId, string servicesId)
                    : base(service)
                {
                    AppsId = appsId;
                    ServicesId = servicesId;
                    Body = body;
                    InitParameters();
                }


                /// <summary>Part of `name`. Name of the resource to update. Example:
                /// apps/myapp/services/default.</summary>
                [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string AppsId { get; private set; }

                /// <summary>Part of `name`. See documentation of `appsId`.</summary>
                [Google.Apis.Util.RequestParameterAttribute("servicesId", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string ServicesId { get; private set; }

                /// <summary>Standard field mask for the set of fields to be updated.</summary>
                [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string UpdateMask { get; set; }

                /// <summary>Set to true to gradually shift traffic to one or more versions that you specify. By
                /// default, traffic is shifted immediately. For gradual traffic migration, the target versions must be
                /// located within instances that are configured for both warmup requests
                /// (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#inboundservicetype) and automatic scaling
                /// (https://cloud.google.com/appengine/docs/admin-
                /// api/reference/rest/v1beta/apps.services.versions#automaticscaling). You must specify the shardBy
                /// (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services#shardby)
                /// field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible
                /// environment. For examples, see Migrating and Splitting Traffic
                /// (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).</summary>
                [Google.Apis.Util.RequestParameterAttribute("migrateTraffic", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<bool> MigrateTraffic { get; set; }


                /// <summary>Gets or sets the body of this request.</summary>
                Google.Apis.Appengine.v1beta.Data.Service Body { get; set; }

                ///<summary>Returns the body of the request.</summary>
                protected override object GetBody() { return Body; }

                ///<summary>Gets the method name.</summary>
                public override string MethodName
                {
                    get { return "patch"; }
                }

                ///<summary>Gets the HTTP method.</summary>
                public override string HttpMethod
                {
                    get { return "PATCH"; }
                }

                ///<summary>Gets the REST path.</summary>
                public override string RestPath
                {
                    get { return "v1beta/apps/{appsId}/services/{servicesId}"; }
                }

                /// <summary>Initializes Patch parameter list.</summary>
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "appsId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "appsId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "servicesId", new Google.Apis.Discovery.Parameter
                        {
                            Name = "servicesId",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "updateMask", new Google.Apis.Discovery.Parameter
                        {
                            Name = "updateMask",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "migrateTraffic", new Google.Apis.Discovery.Parameter
                        {
                            Name = "migrateTraffic",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }

        /// <summary>Creates an App Engine application for a Google Cloud Platform project. Required fields: id - The ID
        /// of the target Cloud Platform project. location - The region
        /// (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For
        /// more information about App Engine applications, see Managing Projects, Applications, and Billing
        /// (https://cloud.google.com/appengine/docs/python/console/).</summary>
        /// <param name="body">The body of the request.</param>
        public virtual CreateRequest Create(Google.Apis.Appengine.v1beta.Data.Application body)
        {
            return new CreateRequest(service, body);
        }

        /// <summary>Creates an App Engine application for a Google Cloud Platform project. Required fields: id - The ID
        /// of the target Cloud Platform project. location - The region
        /// (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For
        /// more information about App Engine applications, see Managing Projects, Applications, and Billing
        /// (https://cloud.google.com/appengine/docs/python/console/).</summary>
        public class CreateRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
        {
            /// <summary>Constructs a new Create request.</summary>
            public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.Application body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }



            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Appengine.v1beta.Data.Application Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "create"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "v1beta/apps"; }
            }

            /// <summary>Initializes Create parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

            }

        }

        /// <summary>Gets information about an application.</summary>
        /// <param name="appsId">Part of `name`. Name of the Application resource to get. Example: apps/myapp.</param>
        public virtual GetRequest Get(string appsId)
        {
            return new GetRequest(service, appsId);
        }

        /// <summary>Gets information about an application.</summary>
        public class GetRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Application>
        {
            /// <summary>Constructs a new Get request.</summary>
            public GetRequest(Google.Apis.Services.IClientService service, string appsId)
                : base(service)
            {
                AppsId = appsId;
                InitParameters();
            }


            /// <summary>Part of `name`. Name of the Application resource to get. Example: apps/myapp.</summary>
            [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string AppsId { get; private set; }


            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "get"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "GET"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "v1beta/apps/{appsId}"; }
            }

            /// <summary>Initializes Get parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "appsId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "appsId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Updates the specified Application resource. You can update the following fields: auth_domain -
        /// Google authentication domain for controlling user access to the application. default_cookie_expiration -
        /// Cookie expiration policy for the application.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="appsId">Part of `name`. Name of the Application resource to update. Example: apps/myapp.</param>
        public virtual PatchRequest Patch(Google.Apis.Appengine.v1beta.Data.Application body, string appsId)
        {
            return new PatchRequest(service, body, appsId);
        }

        /// <summary>Updates the specified Application resource. You can update the following fields: auth_domain -
        /// Google authentication domain for controlling user access to the application. default_cookie_expiration -
        /// Cookie expiration policy for the application.</summary>
        public class PatchRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
        {
            /// <summary>Constructs a new Patch request.</summary>
            public PatchRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.Application body, string appsId)
                : base(service)
            {
                AppsId = appsId;
                Body = body;
                InitParameters();
            }


            /// <summary>Part of `name`. Name of the Application resource to update. Example: apps/myapp.</summary>
            [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string AppsId { get; private set; }

            /// <summary>Standard field mask for the set of fields to be updated.</summary>
            [Google.Apis.Util.RequestParameterAttribute("updateMask", Google.Apis.Util.RequestParameterType.Query)]
            public virtual string UpdateMask { get; set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Appengine.v1beta.Data.Application Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "patch"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "PATCH"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "v1beta/apps/{appsId}"; }
            }

            /// <summary>Initializes Patch parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "appsId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "appsId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
                RequestParameters.Add(
                    "updateMask", new Google.Apis.Discovery.Parameter
                    {
                        Name = "updateMask",
                        IsRequired = false,
                        ParameterType = "query",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }

        /// <summary>Recreates the required App Engine features for the specified App Engine application, for example a
        /// Cloud Storage bucket or App Engine service account. Use this method if you receive an error message about a
        /// missing feature, for example, Error retrieving the App Engine service account.</summary>
        /// <param name="body">The body of the request.</param>
        /// <param name="appsId">Part of `name`. Name of the application to repair. Example: apps/myapp</param>
        public virtual RepairRequest Repair(Google.Apis.Appengine.v1beta.Data.RepairApplicationRequest body, string appsId)
        {
            return new RepairRequest(service, body, appsId);
        }

        /// <summary>Recreates the required App Engine features for the specified App Engine application, for example a
        /// Cloud Storage bucket or App Engine service account. Use this method if you receive an error message about a
        /// missing feature, for example, Error retrieving the App Engine service account.</summary>
        public class RepairRequest : AppengineBaseServiceRequest<Google.Apis.Appengine.v1beta.Data.Operation>
        {
            /// <summary>Constructs a new Repair request.</summary>
            public RepairRequest(Google.Apis.Services.IClientService service, Google.Apis.Appengine.v1beta.Data.RepairApplicationRequest body, string appsId)
                : base(service)
            {
                AppsId = appsId;
                Body = body;
                InitParameters();
            }


            /// <summary>Part of `name`. Name of the application to repair. Example: apps/myapp</summary>
            [Google.Apis.Util.RequestParameterAttribute("appsId", Google.Apis.Util.RequestParameterType.Path)]
            public virtual string AppsId { get; private set; }


            /// <summary>Gets or sets the body of this request.</summary>
            Google.Apis.Appengine.v1beta.Data.RepairApplicationRequest Body { get; set; }

            ///<summary>Returns the body of the request.</summary>
            protected override object GetBody() { return Body; }

            ///<summary>Gets the method name.</summary>
            public override string MethodName
            {
                get { return "repair"; }
            }

            ///<summary>Gets the HTTP method.</summary>
            public override string HttpMethod
            {
                get { return "POST"; }
            }

            ///<summary>Gets the REST path.</summary>
            public override string RestPath
            {
                get { return "v1beta/apps/{appsId}:repair"; }
            }

            /// <summary>Initializes Repair parameter list.</summary>
            protected override void InitParameters()
            {
                base.InitParameters();

                RequestParameters.Add(
                    "appsId", new Google.Apis.Discovery.Parameter
                    {
                        Name = "appsId",
                        IsRequired = true,
                        ParameterType = "path",
                        DefaultValue = null,
                        Pattern = null,
                    });
            }

        }
    }
}

namespace Google.Apis.Appengine.v1beta.Data
{    

    /// <summary>Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for
    /// API handlers.</summary>
    public class ApiConfigHandler : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Action to take when users access resources that require authentication. Defaults to
        /// redirect.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("authFailAction")]
        public virtual string AuthFailAction { get; set; } 

        /// <summary>Level of login required to access this resource. Defaults to optional.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("login")]
        public virtual string Login { get; set; } 

        /// <summary>Path to the script from the application root directory.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("script")]
        public virtual string Script { get; set; } 

        /// <summary>Security (HTTPS) enforcement for this URL.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("securityLevel")]
        public virtual string SecurityLevel { get; set; } 

        /// <summary>URL to serve the endpoint at.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("url")]
        public virtual string Url { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Uses Google Cloud Endpoints to handle requests.</summary>
    public class ApiEndpointHandler : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Path to the script from the application root directory.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("scriptPath")]
        public virtual string ScriptPath { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An Application resource contains the top-level configuration of an App Engine application.</summary>
    public class Application : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Google Apps authentication domain that controls which users can access this application.Defaults to
        /// open access for any Google Account.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("authDomain")]
        public virtual string AuthDomain { get; set; } 

        /// <summary>Google Cloud Storage bucket that can be used for storing files associated with this application.
        /// This bucket is associated with the application and can be used by the gcloud deployment
        /// commands.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("codeBucket")]
        public virtual string CodeBucket { get; set; } 

        /// <summary>Google Cloud Storage bucket that can be used by this application to store
        /// content.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultBucket")]
        public virtual string DefaultBucket { get; set; } 

        /// <summary>Cookie expiration policy for this application.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultCookieExpiration")]
        public virtual string DefaultCookieExpiration { get; set; } 

        /// <summary>Hostname used to reach this application, as resolved by App Engine.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultHostname")]
        public virtual string DefaultHostname { get; set; } 

        /// <summary>HTTP path dispatch rules for requests to the application that do not explicitly target a service or
        /// version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("dispatchRules")]
        public virtual System.Collections.Generic.IList<UrlDispatchRule> DispatchRules { get; set; } 

        /// <summary>The Google Container Registry domain used for storing managed build docker images for this
        /// application.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("gcrDomain")]
        public virtual string GcrDomain { get; set; } 

        [Newtonsoft.Json.JsonPropertyAttribute("iap")]
        public virtual IdentityAwareProxy Iap { get; set; } 

        /// <summary>Identifier of the Application resource. This identifier is equivalent to the project ID of the
        /// Google Cloud Platform project where you want to deploy your application. Example: myapp.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Location from which this application will be run. Application instances will run out of data
        /// centers in the chosen location, which is also where all of the application's end user content is
        /// stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 -
        /// Eastern US</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationId")]
        public virtual string LocationId { get; set; } 

        /// <summary>Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Serving status of this application.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("servingStatus")]
        public virtual string ServingStatus { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An SSL certificate that a user has been authorized to administer. A user is authorized to administer
    /// any certificate that applies to one of their authorized domains.</summary>
    public class AuthorizedCertificate : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently
        /// from a certificate authority.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("certificateRawData")]
        public virtual CertificateRawData CertificateRawData { get; set; } 

        /// <summary>The user-specified display name of the certificate. This is not guaranteed to be unique. Example:
        /// My Certificate.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; } 

        /// <summary>Aggregate count of the domain mappings with this certificate mapped. This count includes domain
        /// mappings on applications for which the user does not have VIEWER permissions.Only returned by GET requests
        /// when specifically requested by the view=FULL option.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("domainMappingsCount")]
        public virtual System.Nullable<int> DomainMappingsCount { get; set; } 

        /// <summary>Topmost applicable domains of this certificate. This certificate applies to these domains and their
        /// subdomains. Example: example.com.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("domainNames")]
        public virtual System.Collections.Generic.IList<string> DomainNames { get; set; } 

        /// <summary>The time when this certificate expires. To update the renewal time on this certificate, upload an
        /// SSL certificate with a different expiration time using
        /// AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expireTime")]
        public virtual string ExpireTime { get; set; } 

        /// <summary>Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate
        /// resource creation. Example: 12345.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Full path to the AuthorizedCertificate resource in the API. Example:
        /// apps/myapp/authorizedCertificates/12345.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The full paths to user visible Domain Mapping resources that have this certificate mapped. Example:
        /// apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the
        /// user does not have VIEWER permissions on all of the applications that have this certificate mapped. See
        /// domain_mappings_count for a complete count.Only returned by GET requests when specifically requested by the
        /// view=FULL option.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("visibleDomainMappings")]
        public virtual System.Collections.Generic.IList<string> VisibleDomainMappings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A domain that a user has been authorized to administer. To authorize use of a domain, verify ownership
    /// via Webmaster Central (https://www.google.com/webmasters/verification/home).</summary>
    public class AuthorizedDomain : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Fully qualified domain name of the domain authorized for use. Example: example.com.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Full path to the AuthorizedDomain resource in the API. Example:
        /// apps/myapp/authorizedDomains/example.com.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Automatic scaling is based on request rate, response latencies, and other application
    /// metrics.</summary>
    public class AutomaticScaling : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait
        /// between changes to the number of virtual machines. Only applicable for VM runtimes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("coolDownPeriod")]
        public virtual string CoolDownPeriod { get; set; } 

        /// <summary>Target scaling by CPU usage.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cpuUtilization")]
        public virtual CpuUtilization CpuUtilization { get; set; } 

        /// <summary>Target scaling by disk usage.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("diskUtilization")]
        public virtual DiskUtilization DiskUtilization { get; set; } 

        /// <summary>Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns
        /// a new instance.Defaults to a runtime-specific value.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxConcurrentRequests")]
        public virtual System.Nullable<int> MaxConcurrentRequests { get; set; } 

        /// <summary>Maximum number of idle instances that should be maintained for this version.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxIdleInstances")]
        public virtual System.Nullable<int> MaxIdleInstances { get; set; } 

        /// <summary>Maximum amount of time that a request should wait in the pending queue before starting a new
        /// instance to handle it.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxPendingLatency")]
        public virtual string MaxPendingLatency { get; set; } 

        /// <summary>Maximum number of instances that should be started to handle requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxTotalInstances")]
        public virtual System.Nullable<int> MaxTotalInstances { get; set; } 

        /// <summary>Minimum number of idle instances that should be maintained for this version. Only applicable for
        /// the default version of a service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minIdleInstances")]
        public virtual System.Nullable<int> MinIdleInstances { get; set; } 

        /// <summary>Minimum amount of time a request should wait in the pending queue before starting a new instance to
        /// handle it.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minPendingLatency")]
        public virtual string MinPendingLatency { get; set; } 

        /// <summary>Minimum number of instances that should be maintained for this version.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("minTotalInstances")]
        public virtual System.Nullable<int> MinTotalInstances { get; set; } 

        /// <summary>Target scaling by network usage.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("networkUtilization")]
        public virtual NetworkUtilization NetworkUtilization { get; set; } 

        /// <summary>Target scaling by request utilization.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("requestUtilization")]
        public virtual RequestUtilization RequestUtilization { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A service with basic scaling will create an instance when the application receives a request. The
    /// instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or
    /// driven by user activity.</summary>
    public class BasicScaling : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Duration of time after the last request that an instance must wait before the instance is shut
        /// down.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("idleTimeout")]
        public virtual string IdleTimeout { get; set; } 

        /// <summary>Maximum number of instances to create for this version.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("maxInstances")]
        public virtual System.Nullable<int> MaxInstances { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An SSL certificate obtained from a certificate authority.</summary>
    public class CertificateRawData : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then
        /// encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: -----BEGIN
        /// RSA PRIVATE KEY-----  -----END RSA PRIVATE KEY----- @InputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("privateKey")]
        public virtual string PrivateKey { get; set; } 

        /// <summary>PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must
        /// include the header and footer. Example: -----BEGIN CERTIFICATE-----  -----END CERTIFICATE-----</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("publicCertificate")]
        public virtual string PublicCertificate { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Docker image that is used to create a container and start a VM instance for the version that you
    /// deploy. Only applicable for instances running in the App Engine flexible environment.</summary>
    public class ContainerInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>URI to the hosted container image in Google Container Registry. The URI must be fully qualified and
        /// include a tag or digest. Examples: "gcr.io/my-project/image:tag" or "gcr.io/my-
        /// project/image@digest"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("image")]
        public virtual string Image { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Target scaling by CPU usage.</summary>
    public class CpuUtilization : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Period of time over which CPU utilization is calculated.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("aggregationWindowLength")]
        public virtual string AggregationWindowLength { get; set; } 

        /// <summary>Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetUtilization")]
        public virtual System.Nullable<double> TargetUtilization { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request message for Instances.DebugInstance.</summary>
    public class DebugInstanceRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Public SSH key to add to the instance. Examples: [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]
        /// [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}For more
        /// information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-
        /// removing-ssh-keys).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sshKey")]
        public virtual string SshKey { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Code and application artifacts used to deploy a version to App Engine.</summary>
    public class Deployment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The Docker image for the container that runs the version. Only applicable for instances running in
        /// the App Engine flexible environment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("container")]
        public virtual ContainerInfo Container { get; set; } 

        /// <summary>Manifest of the files stored in Google Cloud Storage that are included as part of this version. All
        /// files must be readable using the credentials supplied with this call.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("files")]
        public virtual System.Collections.Generic.IDictionary<string,FileInfo> Files { get; set; } 

        /// <summary>The zip file for this deployment, if this is a zip deployment.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("zip")]
        public virtual ZipInfo Zip { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Target scaling by disk usage. Only applicable for VM runtimes.</summary>
    public class DiskUtilization : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Target bytes read per second.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetReadBytesPerSecond")]
        public virtual System.Nullable<int> TargetReadBytesPerSecond { get; set; } 

        /// <summary>Target ops read per seconds.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetReadOpsPerSecond")]
        public virtual System.Nullable<int> TargetReadOpsPerSecond { get; set; } 

        /// <summary>Target bytes written per second.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetWriteBytesPerSecond")]
        public virtual System.Nullable<int> TargetWriteBytesPerSecond { get; set; } 

        /// <summary>Target ops written per second.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetWriteOpsPerSecond")]
        public virtual System.Nullable<int> TargetWriteOpsPerSecond { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A domain serving an App Engine application.</summary>
    public class DomainMapping : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Relative name of the domain serving the application. Example: example.com.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Full path to the DomainMapping resource in the API. Example:
        /// apps/myapp/domainMapping/example.com.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The resource records required to configure this domain mapping. These records must be added to the
        /// domain's DNS configuration in order to serve the application via this domain mapping.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resourceRecords")]
        public virtual System.Collections.Generic.IList<ResourceRecord> ResourceRecords { get; set; } 

        /// <summary>SSL configuration for this domain. If unconfigured, this domain will not serve with SSL.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sslSettings")]
        public virtual SslSettings SslSettings { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A
    /// typical example is to use it as the request or the response type of an API method. For instance: service Foo {
    /// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for Empty is empty
    /// JSON object {}.</summary>
    public class Empty : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides
    /// tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and
    /// configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-
    /// management/overview).</summary>
    public class EndpointsApiService : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Endpoints service configuration id as specified by the Service Management API. For example
        /// "2016-09-19r1"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("configId")]
        public virtual string ConfigId { get; set; } 

        /// <summary>Endpoints service name which is the name of the "service" resource in the Service Management API.
        /// For example "myapi.endpoints.myproject.cloud.goog"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Custom static error page to be served when an error occurs.</summary>
    public class ErrorHandler : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Error condition this handler applies to.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errorCode")]
        public virtual string ErrorCode { get; set; } 

        /// <summary>MIME type of file. Defaults to text/html.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mimeType")]
        public virtual string MimeType { get; set; } 

        /// <summary>Static file content to be served for this error.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("staticFile")]
        public virtual string StaticFile { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Single source file that is part of the version to be deployed. Each source file that is deployed must
    /// be specified separately.</summary>
    public class FileInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The MIME type of the file.Defaults to the value from Google Cloud Storage.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mimeType")]
        public virtual string MimeType { get; set; } 

        /// <summary>The SHA1 hash of the file, in hex.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sha1Sum")]
        public virtual string Sha1Sum { get; set; } 

        /// <summary>URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the
        /// form 'http(s)://storage.googleapis.com//'.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sourceUrl")]
        public virtual string SourceUrl { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new
    /// instances. Only applicable for instances in App Engine flexible environment.</summary>
    public class HealthCheck : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Interval between health checks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("checkInterval")]
        public virtual string CheckInterval { get; set; } 

        /// <summary>Whether to explicitly disable health checks for this instance.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("disableHealthCheck")]
        public virtual System.Nullable<bool> DisableHealthCheck { get; set; } 

        /// <summary>Number of consecutive successful health checks required before receiving traffic.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("healthyThreshold")]
        public virtual System.Nullable<long> HealthyThreshold { get; set; } 

        /// <summary>Host header to send when performing an HTTP health check. Example: "myapp.appspot.com"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("host")]
        public virtual string Host { get; set; } 

        /// <summary>Number of consecutive failed health checks required before an instance is restarted.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("restartThreshold")]
        public virtual System.Nullable<long> RestartThreshold { get; set; } 

        /// <summary>Time before the health check is considered failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("timeout")]
        public virtual string Timeout { get; set; } 

        /// <summary>Number of consecutive failed health checks required before removing traffic.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unhealthyThreshold")]
        public virtual System.Nullable<long> UnhealthyThreshold { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Identity-Aware Proxy</summary>
    public class IdentityAwareProxy : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether the serving infrastructure will authenticate and authorize all incoming requests.If true,
        /// the oauth2_client_id and oauth2_client_secret fields must be non-empty.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("enabled")]
        public virtual System.Nullable<bool> Enabled { get; set; } 

        /// <summary>OAuth2 client ID to use for the authentication flow.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauth2ClientId")]
        public virtual string Oauth2ClientId { get; set; } 

        /// <summary>OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be
        /// retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256
        /// field.@InputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauth2ClientSecret")]
        public virtual string Oauth2ClientSecret { get; set; } 

        /// <summary>Hex-encoded SHA-256 hash of the client secret.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("oauth2ClientSecretSha256")]
        public virtual string Oauth2ClientSecretSha256 { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>An Instance resource is the computing unit that App Engine uses to automatically scale an
    /// application.</summary>
    public class Instance : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>App Engine release this instance is running on.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("appEngineRelease")]
        public virtual string AppEngineRelease { get; set; } 

        /// <summary>Availability of the instance.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("availability")]
        public virtual string Availability { get; set; } 

        /// <summary>Average latency (ms) over the last minute.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("averageLatency")]
        public virtual System.Nullable<int> AverageLatency { get; set; } 

        /// <summary>Number of errors since this instance was started.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errors")]
        public virtual System.Nullable<int> Errors { get; set; } 

        /// <summary>Relative name of the instance within the version. Example: instance-1.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Total memory in use (bytes).@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("memoryUsage")]
        public virtual System.Nullable<long> MemoryUsage { get; set; } 

        /// <summary>Full path to the Instance resource in the API. Example:
        /// apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Average queries per second (QPS) over the last minute.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("qps")]
        public virtual System.Nullable<float> Qps { get; set; } 

        /// <summary>Number of requests since this instance was started.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("requests")]
        public virtual System.Nullable<int> Requests { get; set; } 

        /// <summary>Time that this instance was started.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual string StartTime { get; set; } 

        /// <summary>Whether this instance is in debug mode. Only applicable for instances in App Engine flexible
        /// environment.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("vmDebugEnabled")]
        public virtual System.Nullable<bool> VmDebugEnabled { get; set; } 

        /// <summary>Virtual machine ID of this instance. Only applicable for instances in App Engine flexible
        /// environment.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("vmId")]
        public virtual string VmId { get; set; } 

        /// <summary>The IP address of this instance. Only applicable for instances in App Engine flexible
        /// environment.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("vmIp")]
        public virtual string VmIp { get; set; } 

        /// <summary>Name of the virtual machine where this instance lives. Only applicable for instances in App Engine
        /// flexible environment.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("vmName")]
        public virtual string VmName { get; set; } 

        /// <summary>Status of the virtual machine where this instance lives. Only applicable for instances in App
        /// Engine flexible environment.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("vmStatus")]
        public virtual string VmStatus { get; set; } 

        /// <summary>Zone where the virtual machine is located. Only applicable for instances in App Engine flexible
        /// environment.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("vmZoneName")]
        public virtual string VmZoneName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Third-party Python runtime library that is required by the application.</summary>
    public class Library : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Name of the library. Example: "django".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Version of the library to select, or "latest".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual string Version { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response message for AuthorizedCertificates.ListAuthorizedCertificates.</summary>
    public class ListAuthorizedCertificatesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The SSL certificates the user is authorized to administer.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("certificates")]
        public virtual System.Collections.Generic.IList<AuthorizedCertificate> Certificates { get; set; } 

        /// <summary>Continuation token for fetching the next page of results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response message for AuthorizedDomains.ListAuthorizedDomains.</summary>
    public class ListAuthorizedDomainsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The authorized domains belonging to the user.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("domains")]
        public virtual System.Collections.Generic.IList<AuthorizedDomain> Domains { get; set; } 

        /// <summary>Continuation token for fetching the next page of results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response message for DomainMappings.ListDomainMappings.</summary>
    public class ListDomainMappingsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The domain mappings for the application.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("domainMappings")]
        public virtual System.Collections.Generic.IList<DomainMapping> DomainMappings { get; set; } 

        /// <summary>Continuation token for fetching the next page of results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response message for Instances.ListInstances.</summary>
    public class ListInstancesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The instances belonging to the requested version.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instances")]
        public virtual System.Collections.Generic.IList<Instance> Instances { get; set; } 

        /// <summary>Continuation token for fetching the next page of results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response message for Locations.ListLocations.</summary>
    public class ListLocationsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>A list of locations that matches the specified filter in the request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locations")]
        public virtual System.Collections.Generic.IList<Location> Locations { get; set; } 

        /// <summary>The standard List next-page token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The response message for Operations.ListOperations.</summary>
    public class ListOperationsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The standard List next-page token.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>A list of operations that matches the specified filter in the request.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operations")]
        public virtual System.Collections.Generic.IList<Operation> Operations { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response message for Services.ListServices.</summary>
    public class ListServicesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Continuation token for fetching the next page of results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The services belonging to the requested application.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("services")]
        public virtual System.Collections.Generic.IList<Service> Services { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Response message for Versions.ListVersions.</summary>
    public class ListVersionsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Continuation token for fetching the next page of results.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; } 

        /// <summary>The versions belonging to the requested service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("versions")]
        public virtual System.Collections.Generic.IList<Version> Versions { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new
    /// instances.</summary>
    public class LivenessCheck : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Interval between health checks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("checkInterval")]
        public virtual string CheckInterval { get; set; } 

        /// <summary>Number of consecutive successful checks required before considering the VM healthy.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("healthyThreshold")]
        public virtual System.Nullable<long> HealthyThreshold { get; set; } 

        /// <summary>Host header to send when performing a HTTP Liveness check. Example: "myapp.appspot.com"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("host")]
        public virtual string Host { get; set; } 

        /// <summary>The initial delay before starting to execute the checks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("initialDelay")]
        public virtual string InitialDelay { get; set; } 

        /// <summary>The request path.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("path")]
        public virtual string Path { get; set; } 

        /// <summary>Time before the check is considered failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("timeout")]
        public virtual string Timeout { get; set; } 

        /// <summary>Number of consecutive failed checks required before considering the VM unhealthy.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unhealthyThreshold")]
        public virtual System.Nullable<long> UnhealthyThreshold { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A resource that represents Google Cloud Platform location.</summary>
    public class Location : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-
        /// east1"}</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IDictionary<string,string> Labels { get; set; } 

        /// <summary>The canonical id for this location. For example: "us-east1".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("locationId")]
        public virtual string LocationId { get; set; } 

        /// <summary>Service-specific metadata. For example the available capacity at the given location.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("metadata")]
        public virtual System.Collections.Generic.IDictionary<string,object> Metadata { get; set; } 

        /// <summary>Resource name for the location, which may vary between implementations. For example: "projects
        /// /example-project/locations/us-east1"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Metadata for the given google.cloud.location.Location.</summary>
    public class LocationMetadata : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>App Engine Flexible Environment is available in the given location.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("flexibleEnvironmentAvailable")]
        public virtual System.Nullable<bool> FlexibleEnvironmentAvailable { get; set; } 

        /// <summary>App Engine Standard Environment is available in the given location.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("standardEnvironmentAvailable")]
        public virtual System.Nullable<bool> StandardEnvironmentAvailable { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A service with manual scaling runs continuously, allowing you to perform complex initialization and
    /// rely on the state of its memory over time.</summary>
    public class ManualScaling : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Number of instances to assign to the service at the start. This number can later be altered by
        /// using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances()
        /// function.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instances")]
        public virtual System.Nullable<int> Instances { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Extra network settings. Only applicable for VM runtimes.</summary>
    public class Network : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>List of ports, or port pairs, to forward from the virtual machine to the application
        /// container.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("forwardedPorts")]
        public virtual System.Collections.Generic.IList<string> ForwardedPorts { get; set; } 

        /// <summary>Tag to apply to the VM instance during creation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceTag")]
        public virtual string InstanceTag { get; set; } 

        /// <summary>Google Cloud Platform network where the virtual machines are created. Specify the short name, not
        /// the resource path.Defaults to default.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Google Cloud Platform sub-network where the virtual machines are created. Specify the short name,
        /// not the resource path.If a subnetwork name is specified, a network name will also be required unless it is
        /// for the default network. If the network the VM instance is being created in is a Legacy network, then the IP
        /// address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto
        /// Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address
        /// is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network
        /// the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be
        /// specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork
        /// must exist in the same region as the Flex app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("subnetworkName")]
        public virtual string SubnetworkName { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Target scaling by network usage. Only applicable for VM runtimes.</summary>
    public class NetworkUtilization : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Target bytes received per second.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetReceivedBytesPerSecond")]
        public virtual System.Nullable<int> TargetReceivedBytesPerSecond { get; set; } 

        /// <summary>Target packets received per second.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetReceivedPacketsPerSecond")]
        public virtual System.Nullable<int> TargetReceivedPacketsPerSecond { get; set; } 

        /// <summary>Target bytes sent per second.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetSentBytesPerSecond")]
        public virtual System.Nullable<int> TargetSentBytesPerSecond { get; set; } 

        /// <summary>Target packets sent per second.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetSentPacketsPerSecond")]
        public virtual System.Nullable<int> TargetSentPacketsPerSecond { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>This resource represents a long-running operation that is the result of a network API call.</summary>
    public class Operation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>If the value is false, it means the operation is still in progress. If true, the operation is
        /// completed, and either error or response is available.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("done")]
        public virtual System.Nullable<bool> Done { get; set; } 

        /// <summary>The error result of the operation in case of failure or cancellation.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual Status Error { get; set; } 

        /// <summary>Service-specific metadata associated with the operation. It typically contains progress information
        /// and common metadata such as create time. Some services might not provide such metadata. Any method that
        /// returns a long-running operation should document the metadata type, if any.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("metadata")]
        public virtual System.Collections.Generic.IDictionary<string,object> Metadata { get; set; } 

        /// <summary>The server-assigned name, which is only unique within the same service that originally returns it.
        /// If you use the default HTTP mapping, the name should have the format of
        /// operations/some/unique/name.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>The normal response of the operation in case of success. If the original method returns no data on
        /// success, such as Delete, the response is google.protobuf.Empty. If the original method is standard
        /// Get/Create/Update, the response should be the resource. For other methods, the response should have the type
        /// XxxResponse, where Xxx is the original method name. For example, if the original method name is
        /// TakeSnapshot(), the inferred response type is TakeSnapshotResponse.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("response")]
        public virtual System.Collections.Generic.IDictionary<string,object> Response { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Metadata for the given google.longrunning.Operation.</summary>
    public class OperationMetadata : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Timestamp that this operation completed.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual string EndTime { get; set; } 

        /// <summary>Timestamp that this operation was created.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("insertTime")]
        public virtual string InsertTime { get; set; } 

        /// <summary>API method that initiated this operation. Example:
        /// google.appengine.v1beta4.Version.CreateVersion.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>Type of this operation. Deprecated, use method field instead. Example:
        /// "create_version".@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("operationType")]
        public virtual string OperationType { get; set; } 

        /// <summary>Name of the resource that this operation is acting on. Example:
        /// apps/myapp/modules/default.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("target")]
        public virtual string Target { get; set; } 

        /// <summary>User who requested this operation.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("user")]
        public virtual string User { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Metadata for the given google.longrunning.Operation.</summary>
    public class OperationMetadataExperimental : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Time that this operation completed.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual string EndTime { get; set; } 

        /// <summary>Time that this operation was created.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("insertTime")]
        public virtual string InsertTime { get; set; } 

        /// <summary>API method that initiated this operation. Example:
        /// google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>Name of the resource that this operation is acting on. Example:
        /// apps/myapp/customDomains/example.com.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("target")]
        public virtual string Target { get; set; } 

        /// <summary>User who requested this operation.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("user")]
        public virtual string User { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Metadata for the given google.longrunning.Operation.</summary>
    public class OperationMetadataV1 : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Time that this operation completed.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual string EndTime { get; set; } 

        /// <summary>Ephemeral message that may change every time the operation is polled. @OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("ephemeralMessage")]
        public virtual string EphemeralMessage { get; set; } 

        /// <summary>Time that this operation was created.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("insertTime")]
        public virtual string InsertTime { get; set; } 

        /// <summary>API method that initiated this operation. Example:
        /// google.appengine.v1.Versions.CreateVersion.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>Name of the resource that this operation is acting on. Example:
        /// apps/myapp/services/default.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("target")]
        public virtual string Target { get; set; } 

        /// <summary>User who requested this operation.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("user")]
        public virtual string User { get; set; } 

        /// <summary>Durable messages that persist on every operation poll. @OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("warning")]
        public virtual System.Collections.Generic.IList<string> Warning { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Metadata for the given google.longrunning.Operation.</summary>
    public class OperationMetadataV1Beta : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Time that this operation completed.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual string EndTime { get; set; } 

        /// <summary>Ephemeral message that may change every time the operation is polled. @OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("ephemeralMessage")]
        public virtual string EphemeralMessage { get; set; } 

        /// <summary>Time that this operation was created.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("insertTime")]
        public virtual string InsertTime { get; set; } 

        /// <summary>API method that initiated this operation. Example:
        /// google.appengine.v1beta.Versions.CreateVersion.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>Name of the resource that this operation is acting on. Example:
        /// apps/myapp/services/default.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("target")]
        public virtual string Target { get; set; } 

        /// <summary>User who requested this operation.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("user")]
        public virtual string User { get; set; } 

        /// <summary>Durable messages that persist on every operation poll. @OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("warning")]
        public virtual System.Collections.Generic.IList<string> Warning { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Metadata for the given google.longrunning.Operation.</summary>
    public class OperationMetadataV1Beta5 : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Timestamp that this operation completed.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual string EndTime { get; set; } 

        /// <summary>Timestamp that this operation was created.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("insertTime")]
        public virtual string InsertTime { get; set; } 

        /// <summary>API method name that initiated this operation. Example:
        /// google.appengine.v1beta5.Version.CreateVersion.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("method")]
        public virtual string Method { get; set; } 

        /// <summary>Name of the resource that this operation is acting on. Example:
        /// apps/myapp/services/default.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("target")]
        public virtual string Target { get; set; } 

        /// <summary>User who requested this operation.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("user")]
        public virtual string User { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic
    /// rotation.</summary>
    public class ReadinessCheck : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Interval between health checks.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("checkInterval")]
        public virtual string CheckInterval { get; set; } 

        /// <summary>Number of consecutive successful checks required before receiving traffic.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("healthyThreshold")]
        public virtual System.Nullable<long> HealthyThreshold { get; set; } 

        /// <summary>Host header to send when performing a HTTP Readiness check. Example: "myapp.appspot.com"</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("host")]
        public virtual string Host { get; set; } 

        /// <summary>The request path.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("path")]
        public virtual string Path { get; set; } 

        /// <summary>Time before the check is considered failed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("timeout")]
        public virtual string Timeout { get; set; } 

        /// <summary>Number of consecutive failed checks required before removing traffic.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("unhealthyThreshold")]
        public virtual System.Nullable<long> UnhealthyThreshold { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Request message for 'Applications.RepairApplication'.</summary>
    public class RepairApplicationRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Target scaling by request utilization. Only applicable for VM runtimes.</summary>
    public class RequestUtilization : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Target number of concurrent requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetConcurrentRequests")]
        public virtual System.Nullable<int> TargetConcurrentRequests { get; set; } 

        /// <summary>Target requests per second.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("targetRequestCountPerSecond")]
        public virtual System.Nullable<int> TargetRequestCountPerSecond { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A DNS resource record.</summary>
    public class ResourceRecord : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Relative name of the object affected by this record. Only applicable for CNAME records. Example:
        /// 'www'.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Data for this record. Values vary by record type, as defined in RFC 1035 (section 5) and RFC 1034
        /// (section 3.6.1).</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("rrdata")]
        public virtual string Rrdata { get; set; } 

        /// <summary>Resource record type. Example: AAAA.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Machine resources for a version.</summary>
    public class Resources : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Number of CPU cores needed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("cpu")]
        public virtual System.Nullable<double> Cpu { get; set; } 

        /// <summary>Disk size (GB) needed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("diskGb")]
        public virtual System.Nullable<double> DiskGb { get; set; } 

        /// <summary>Memory (GB) needed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("memoryGb")]
        public virtual System.Nullable<double> MemoryGb { get; set; } 

        /// <summary>User specified volumes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("volumes")]
        public virtual System.Collections.Generic.IList<Volume> Volumes { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Executes a script to handle the request that matches the URL pattern.</summary>
    public class ScriptHandler : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Path to the script from the application root directory.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("scriptPath")]
        public virtual string ScriptPath { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Service resource is a logical component of an application that can share state and communicate in a
    /// secure fashion with other services. For example, an application that handles customer requests might include
    /// separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each
    /// service has a collection of versions that define a specific set of code used to implement the functionality of
    /// that service.</summary>
    public class Service : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Relative name of the service within the application. Example: default.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Full path to the Service resource in the API. Example:
        /// apps/myapp/services/default.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Mapping that defines fractional HTTP traffic diversion to different versions within the
        /// service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("split")]
        public virtual TrafficSplit Split { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>SSL configuration for a DomainMapping resource.</summary>
    public class SslSettings : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field
        /// will remove SSL support. Example: 12345.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("certificateId")]
        public virtual string CertificateId { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript
    /// source files. Static file handlers describe which files in the application directory are static files, and which
    /// URLs serve them.</summary>
    public class StaticFilesHandler : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Whether files should also be uploaded as code data. By default, files declared in static file
        /// handlers are uploaded as static data and are only served to end users; they cannot be read by the
        /// application. If enabled, uploads are charged against both your code and static data storage resource
        /// quotas.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("applicationReadable")]
        public virtual System.Nullable<bool> ApplicationReadable { get; set; } 

        /// <summary>Time a static file served by this handler should be cached by web proxies and browsers.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("expiration")]
        public virtual string Expiration { get; set; } 

        /// <summary>HTTP headers to use for all responses from these URLs.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("httpHeaders")]
        public virtual System.Collections.Generic.IDictionary<string,string> HttpHeaders { get; set; } 

        /// <summary>MIME type used to serve all files served by this handler.Defaults to file-specific MIME types,
        /// which are derived from each file's filename extension.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("mimeType")]
        public virtual string MimeType { get; set; } 

        /// <summary>Path to the static files matched by the URL pattern, from the application root directory. The path
        /// can refer to text matched in groupings in the URL pattern.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("path")]
        public virtual string Path { get; set; } 

        /// <summary>Whether this handler should match the request if the file referenced by the handler does not
        /// exist.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("requireMatchingFile")]
        public virtual System.Nullable<bool> RequireMatchingFile { get; set; } 

        /// <summary>Regular expression that matches the file paths for all files that should be referenced by this
        /// handler.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("uploadPathRegex")]
        public virtual string UploadPathRegex { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The Status type defines a logical error model that is suitable for different programming environments,
    /// including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to
    /// be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status
    /// message contains three pieces of data: error code, error message, and error details. The error code should be an
    /// enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a
    /// developer-facing English message that helps developers understand and resolve the error. If a localized user-
    /// facing error message is needed, put the localized message in the error details or localize it in the client. The
    /// optional error details may contain arbitrary information about the error. There is a predefined set of error
    /// detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status
    /// message is the logical representation of the error model, but it is not necessarily the actual wire format. When
    /// the Status message is exposed in different client libraries and different wire protocols, it can be mapped
    /// differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some
    /// error codes in C.Other usesThe error model and the Status message can be used in a variety of environments,
    /// either with or without APIs, to provide a consistent developer experience across different environments.Example
    /// uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it
    /// may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow
    /// has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a
    /// client uses batch request and batch response, the Status message should be used directly inside batch response,
    /// one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results
    /// in its response, the status of those operations should be represented directly using the Status message.
    /// Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping
    /// needed for security/privacy reasons.</summary>
    public class Status : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>The status code, which should be an enum value of google.rpc.Code.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("code")]
        public virtual System.Nullable<int> Code { get; set; } 

        /// <summary>A list of messages that carry the error details. There will be a common set of message types for
        /// APIs to use.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual System.Collections.Generic.IList<System.Collections.Generic.IDictionary<string,object>> Details { get; set; } 

        /// <summary>A developer-facing error message, which should be in English. Any user-facing error message should
        /// be localized and sent in the google.rpc.Status.details field, or localized by the client.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("message")]
        public virtual string Message { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Traffic routing configuration for versions within a single service. Traffic splits define how traffic
    /// directed to the service is assigned to versions.</summary>
    public class TrafficSplit : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for
        /// that version. Each version can be specified only once, but some versions in the service may not have any
        /// traffic allocation. Services that have traffic allocated cannot be deleted until either the service is
        /// deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision
        /// is supported for IP-based splits and up to three decimal places is supported for cookie-based
        /// splits.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("allocations")]
        public virtual System.Collections.Generic.IDictionary<string,System.Nullable<double>> Allocations { get; set; } 

        /// <summary>Mechanism used to determine which version a request is sent to. The traffic selection algorithm
        /// will be stable for either type until allocations are changed.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("shardBy")]
        public virtual string ShardBy { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Rules to match an HTTP request and dispatch that request to a service.</summary>
    public class UrlDispatchRule : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Domain name to match against. The wildcard "*" is supported if specified before a period:
        /// "*.".Defaults to matching all domains: "*".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("domain")]
        public virtual string Domain { get; set; } 

        /// <summary>Pathname within the host. Must start with a "/". A single "*" can be included at the end of the
        /// path.The sum of the lengths of the domain and path may not exceed 100 characters.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("path")]
        public virtual string Path { get; set; } 

        /// <summary>Resource ID of a service in this application that should serve the matched request. The service
        /// must already exist. Example: default.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("service")]
        public virtual string Service { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing
    /// application code or by serving static files uploaded with the version, such as images, CSS, or
    /// JavaScript.</summary>
    public class UrlMap : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Uses API Endpoints to handle requests.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("apiEndpoint")]
        public virtual ApiEndpointHandler ApiEndpoint { get; set; } 

        /// <summary>Action to take when users access resources that require authentication. Defaults to
        /// redirect.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("authFailAction")]
        public virtual string AuthFailAction { get; set; } 

        /// <summary>Level of login required to access this resource.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("login")]
        public virtual string Login { get; set; } 

        /// <summary>30x code to use when performing redirects for the secure field. Defaults to 302.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("redirectHttpResponseCode")]
        public virtual string RedirectHttpResponseCode { get; set; } 

        /// <summary>Executes a script to handle the request that matches this URL pattern.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("script")]
        public virtual ScriptHandler Script { get; set; } 

        /// <summary>Security (HTTPS) enforcement for this URL.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("securityLevel")]
        public virtual string SecurityLevel { get; set; } 

        /// <summary>Returns the contents of a file, such as an image, as the response.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("staticFiles")]
        public virtual StaticFilesHandler StaticFiles { get; set; } 

        /// <summary>URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped,
        /// but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using
        /// the portion of the URL after the prefix as part of the file path.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("urlRegex")]
        public virtual string UrlRegex { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>A Version resource is a specific set of source code and configuration files that are deployed into a
    /// service.</summary>
    public class Version : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Serving configuration for Google Cloud Endpoints
        /// (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is
        /// set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("apiConfig")]
        public virtual ApiConfigHandler ApiConfig { get; set; } 

        /// <summary>Automatic scaling is based on request rate, response latencies, and other application
        /// metrics.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("automaticScaling")]
        public virtual AutomaticScaling AutomaticScaling { get; set; } 

        /// <summary>A service with basic scaling will create an instance when the application receives a request. The
        /// instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent
        /// or driven by user activity.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("basicScaling")]
        public virtual BasicScaling BasicScaling { get; set; } 

        /// <summary>Metadata settings that are supplied to this version to enable beta runtime features.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("betaSettings")]
        public virtual System.Collections.Generic.IDictionary<string,string> BetaSettings { get; set; } 

        /// <summary>Time that this version was created.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual string CreateTime { get; set; } 

        /// <summary>Email address of the user who created this version.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("createdBy")]
        public virtual string CreatedBy { get; set; } 

        /// <summary>Duration that static files should be cached by web proxies and browsers. Only applicable if the
        /// corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-
        /// api/reference/rest/v1beta/apps.services.versions#staticfileshandler) does not specify its own expiration
        /// time.Only returned in GET requests if view=FULL is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("defaultExpiration")]
        public virtual string DefaultExpiration { get; set; } 

        /// <summary>Code and application artifacts that make up this version.Only returned in GET requests if view=FULL
        /// is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("deployment")]
        public virtual Deployment Deployment { get; set; } 

        /// <summary>Total size in bytes of all the files that are included in this version and curerntly hosted on the
        /// App Engine disk.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("diskUsageBytes")]
        public virtual System.Nullable<long> DiskUsageBytes { get; set; } 

        /// <summary>Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible
        /// Service Proxy will be provided to serve the API implemented by the app.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("endpointsApiService")]
        public virtual EndpointsApiService EndpointsApiService { get; set; } 

        /// <summary>App Engine execution environment for this version.Defaults to standard.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("env")]
        public virtual string Env { get; set; } 

        /// <summary>Environment variables available to the application.Only returned in GET requests if view=FULL is
        /// set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("envVariables")]
        public virtual System.Collections.Generic.IDictionary<string,string> EnvVariables { get; set; } 

        /// <summary>Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is
        /// set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("errorHandlers")]
        public virtual System.Collections.Generic.IList<ErrorHandler> ErrorHandlers { get; set; } 

        /// <summary>An ordered list of URL-matching patterns that should be applied to incoming requests. The first
        /// matching URL handles the request and other request handlers are not attempted.Only returned in GET requests
        /// if view=FULL is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("handlers")]
        public virtual System.Collections.Generic.IList<UrlMap> Handlers { get; set; } 

        /// <summary>Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new
        /// instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("healthCheck")]
        public virtual HealthCheck HealthCheck { get; set; } 

        /// <summary>Relative name of the version within the service. Example: v1. Version names can contain only
        /// lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix
        /// "ah-".</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("id")]
        public virtual string Id { get; set; } 

        /// <summary>Before an application can receive email or XMPP messages, the application must be configured to
        /// enable the service.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("inboundServices")]
        public virtual System.Collections.Generic.IList<string> InboundServices { get; set; } 

        /// <summary>Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4,
        /// F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for
        /// ManualScaling or BasicScaling.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("instanceClass")]
        public virtual string InstanceClass { get; set; } 

        /// <summary>Configuration for third-party Python runtime libraries that are required by the application.Only
        /// returned in GET requests if view=FULL is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("libraries")]
        public virtual System.Collections.Generic.IList<Library> Libraries { get; set; } 

        /// <summary>Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced
        /// with new instancesOnly returned in GET requests if view=FULL is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("livenessCheck")]
        public virtual LivenessCheck LivenessCheck { get; set; } 

        /// <summary>A service with manual scaling runs continuously, allowing you to perform complex initialization and
        /// rely on the state of its memory over time.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("manualScaling")]
        public virtual ManualScaling ManualScaling { get; set; } 

        /// <summary>Full path to the Version resource in the API. Example:
        /// apps/myapp/services/default/versions/v1.@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Extra network settings. Only applicable for VM runtimes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("network")]
        public virtual Network Network { get; set; } 

        /// <summary>Files that match this pattern will not be built into this version. Only applicable for Go
        /// runtimes.Only returned in GET requests if view=FULL is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("nobuildFilesRegex")]
        public virtual string NobuildFilesRegex { get; set; } 

        /// <summary>Configures readiness health checking for VM instances. Unhealthy instances are not put into the
        /// backend traffic rotation.Only returned in GET requests if view=FULL is set.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("readinessCheck")]
        public virtual ReadinessCheck ReadinessCheck { get; set; } 

        /// <summary>Machine resources for this version. Only applicable for VM runtimes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("resources")]
        public virtual Resources Resources { get; set; } 

        /// <summary>Desired runtime. Example: python27.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("runtime")]
        public virtual string Runtime { get; set; } 

        /// <summary>Current serving status of this version. Only the versions with a SERVING status create instances
        /// and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("servingStatus")]
        public virtual string ServingStatus { get; set; } 

        /// <summary>Whether multiple requests can be dispatched to this version at once.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("threadsafe")]
        public virtual System.Nullable<bool> Threadsafe { get; set; } 

        /// <summary>Serving URL for this version. Example: "https://myversion-dot-myservice-dot-
        /// myapp.appspot.com"@OutputOnly</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("versionUrl")]
        public virtual string VersionUrl { get; set; } 

        /// <summary>Whether to deploy this version in a container on a virtual machine.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("vm")]
        public virtual System.Nullable<bool> Vm { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>Volumes mounted within the app container. Only applicable for VM runtimes.</summary>
    public class Volume : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>Unique name for the volume.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; } 

        /// <summary>Volume size in gigabytes.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sizeGb")]
        public virtual System.Nullable<double> SizeGb { get; set; } 

        /// <summary>Underlying volume type, e.g. 'tmpfs'.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("volumeType")]
        public virtual string VolumeType { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }    

    /// <summary>The zip file information for a zip deployment.</summary>
    public class ZipInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// <summary>An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or
        /// equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be
        /// slow.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("filesCount")]
        public virtual System.Nullable<int> FilesCount { get; set; } 

        /// <summary>URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form
        /// 'http(s)://storage.googleapis.com//'.</summary>
        [Newtonsoft.Json.JsonPropertyAttribute("sourceUrl")]
        public virtual string SourceUrl { get; set; } 

        /// <summary>The ETag of the item.</summary>
        public virtual string ETag { get; set; }
    }
}
